package com.myblockchain.service;


import com.myblockchain.service.model.Transaction;

/**
 * @author Liu
 */
public interface TransactionService {
    /**
     * 交易签名
     * @param transaction 需要签名的交易
     * @param privateKey 发送方私钥
     * @param prevTransaction 前一笔交易
     */
    void sign(Transaction transaction, String privateKey, Transaction prevTransaction);
    /**
     * 判断是否为coinbase交易
     * @return
     */
    boolean coinbaseTx(Transaction transaction);
    /**
     * 获得交易副本
     * @param transaction
     * @return
     */
    Transaction cloneTx(Transaction transaction);
    /**
     * 得到交易的哈希
     * @return
     */
    String hash(Transaction transaction);
    /**
     * 验证交易签名
     * @param transaction 需要验证的交易
     * @param prevTx 前一笔交易
     * @return
     */
    boolean verify(Transaction transaction, Transaction prevTx);
}
